package com.gmall.bean

import java.text.SimpleDateFormat
import java.time.{Instant, LocalDateTime, ZoneId}
import java.time.format.DateTimeFormatter
import java.util.Date


/**
 * <p>文件名称: log启动日志样例类 </p>
 * <p>描述:  </p>
 * <p>创建时间: 2020/10/14</p>
 * @author <a href="mail to: 1034652894@qq.com" rel="nofollow">Demik Qin</a>
 * @version v1.0
 * @update [序号][日期YYYY-MM-DD] [更改人姓名][变更描述]
 */
case class StartupLog(
                       mid: String,
                       uid: String,
                       appId: String,
                       area: String,
                       os: String,
                       channel: String,
                       logType: String,
                       version: String,
                       ts: Long,
                       var logDate: String = null, // 2020-10-14
                       var logHour: String = null // 10
                     ) {
    /*
      此时间转换可以直接在样例类中赋值，SimpleDateFormat可以序列化，
      但是会有线程安全问题，建议使用JD8的时间日期API
       private val date = new Date(ts)
       logDate = new SimpleDateFormat("yyyy-MM-dd").format(date)
       logHour = new SimpleDateFormat("HH").format(date)
    */

}


object StartupLog {
    def main(args: Array[String]): Unit = {
        /*
        注意：DateTimeFormatter不支持序列化，所以无法直接在样例类中对日期赋值，
              可以在调用DStream流里面，对时间进行赋值
         */
        val instant = Instant.now()
        val ldt = LocalDateTime.ofInstant(instant, ZoneId.systemDefault())
        val dtf1 = DateTimeFormatter.ofPattern("yyyy-MM-dd")
        val dtf2 = DateTimeFormatter.ofPattern("HH")
        val logDate = ldt.format(dtf1)
        val logHour = ldt.format(dtf2)
        println(logDate)
        println(logHour)
    }

}